Serial Attached SCSI (SAS) is a computer bus used to move data to and from computer storage devices such as hard drives and tape drives. SAS depends on a point-to-point serial protocol that replaces the parallel SCSI bus technology that first appeared in the mid 1980s in data centers and workstations, and it uses the standard SCSI command set. A typical SAS system includes one or more “Initiators”, one or more “Targets” and a “Service Delivery Subsystem.” A Service Delivery Subsystem may include one or more “Expanders.”
An Initiator is a device that originates device-service and task-management requests for processing by a target device and receives responses for the same requests from other target devices. For example, Initiators may be provided as an on-board component on the motherboard (as is the case with many server-oriented motherboards) or as an add-on host bus adaptor.
A Target is a device containing logical units and target ports that receive service (e.g. disk service) and task management requests for processing and sends responses for the same requests to initiator devices. Examples of target devices are hard disks and disk array systems.
A Service Delivery Subsystem is part of an input/output (I/O) system that transmits information between an Initiator and a Target. Typically cables and connectors connecting an Initiator and a Target comprise a Service Delivery Subsystem. Optionally, Expanders or backplanes can be considered a part of the Service Delivery Subsystem.
Expanders are devices that form part of a Service Delivery Subsystem and facilitate communication between SAS devices. Expanders facilitate the connection of one or more Initiators to one or more Targets.
The SAS architecture includes six layers, namely the Physical layer, the Phy layer, the Link layer, the Port layer, the Transport layer and the Application layer. The T10 technical committee of the International Committee for Information Technology Standards (INCITS) and affiliates develop and maintain the SAS protocol and define the architecture of the various layers. See, for example, Information technology—SAS Protocol Layer (SPL), Revision 07, 21 Jul. 2010, American National Standard for Information Technology, Ref. No. ISO/IEC 14776-261:201X, incorporated herein by reference in its entirety.
Expanders, as noted above, can be used to allow one or more Initiators to communicate with one or more Targets. When a connection request is made by an Initiator for communication with a Target, or by a Target for a communication with an Initiator, one or more Expanders can attempt to provide a pathway between the Initiator and the Target. An Expander implementing SAS protocols as used herein may be alternatively referred to as a “SAS expander.”
An example SAS expander 10 of the prior art includes a switch core 12, a plurality of SAS expander phys 14 coupled to the switch core 12, and one or more Serial Management Protocol (SMP) internal ports 16 coupled to the switch core 12. The example SAS expander 10 also includes, in this example, a microcontroller (μC) 18 and memory 20. SAS expander 10 often forms a part of an integrated circuit 22 as will be appreciated by those of skill in the art.
The SAS expander phys 14 typically include a link layer 24, a phy layer 26 and a serial transceiver 28. The SMP internal ports 16 typically each include a link layer 30 and a virtual phy connection 32. As noted by the arrows 34, the SAS expander phys 14 each can operate as a connection originator and as a connection receptor.
In typical implementations, a SAS expander 10 has but a single SMP internal phy. As used herein, a “phy” is a single endpoint for transmitting and receiving data and a “port” is one or more phys that share the same SAS address. If the port is busy in a connection, then other requests for the port will wait for the pending connection to terminate. If, for example, the SAS expander 10 is operating as a connection receptor it will not be able to operate as a connection originator until it is done. This can be a problem during high traffic congestion periods. Adding additional SMP virtual phys can help with this problem, but there is always the problem of having all SMP virtual phys busy servicing incoming connection requests, thereby precluding operation as a connection originator until one of the pending connections terminates.
An example of high traffic congestion occurs during a “self-configuration” process of a SAS expander. Self-configuration is an integral part of SAS protocol in which SAS expanders discover all other devices in their domain and fill out their routing tables. During self-configuration, many requests to open pathways (“OPEN” requests) are competing for a limited number of SMP internal phys, leading to the OPEN requests waiting an excessive amount of time for the SMP internal phys to become available.
During self-configuration (and other high traffic situations) there will be contention between multiple SAS expanders that are trying to connect to each other. This contention will result in one SAS expander backing off and accepting a higher priority connection request from another SAS expander, forcing the prior lower priority connection to be dropped and retried. This requires complex firmware and covers a larger set of boundary conditions. As a rough rule of thumb, with two interconnected SAS expanders undergoing self-configuration, roughly twice as much time is required to complete the set of requests in progress due to this contention.
These and other limitations of the prior art will become apparent to those of skill in the art upon a reading of the following descriptions and a study of the several figures of the drawing.